package it.sportingnola.siglecartoni;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import android.content.Context;
import android.widget.ArrayAdapter;
import android.widget.SectionIndexer;

/**
 * Adapter per simulare l'AlphaIndexer che al momento funziona solo con i CursorAdapter Fonte:
 * http:/ /www.anddev.org/advanced-tutorials-f21/alphabetic-fastscroll-listview-similar-to-contacts-
 * t10123 .html
 * 
 * @author paolo
 */

public class CartoonAdapter extends ArrayAdapter<Sigla> implements SectionIndexer {

    ArrayList<Sigla> elements;
    HashMap<String, Integer> alphaIndexer;

    String[] sections;

    public CartoonAdapter(Context context, int textViewResourceId, List<Sigla> objects) {
	super(context, textViewResourceId, objects);
	elements=(ArrayList<Sigla>) objects;
	// la mappa dove ad ogni lettera è associata la posizione
	alphaIndexer=new HashMap<String, Integer>();
	int size=elements.size();
	// Scorro la lista di sigle al contrario
	for (int i=size - 1; i >= 0; i--) {
	    String firstLetter=elements.get(i).toString().substring(0, 1);
	    // Bug delle lettere accentate
	    if ("È".equals(firstLetter)) {
		firstLetter="E";
	    }
	    alphaIndexer.put(firstLetter, i);
	}

	// Per costruire le sezioni metto tutto in ordine alfabetico.
	// Passo dal Set (non ordinabile)
	Set<String> keys=alphaIndexer.keySet();
	Iterator<String> it=keys.iterator();
	ArrayList<String> keyList=new ArrayList<String>();
	// All'ArrayList ordinabile

	while (it.hasNext()) {
	    String key=it.next();
	    keyList.add(key);
	}
	Collections.sort(keyList);
	sections=new String[keyList.size()];
	keyList.toArray(sections);
    }

    @Override
    public int getPositionForSection(int section) {
	String letter=sections[section];
	return alphaIndexer.get(letter);
    }

    /**
     * Mai chiamata
     */
    @Override
    public int getSectionForPosition(int position) {
	return 0;
    }

    @Override
    public Object[] getSections() {
	return sections;
    }

}
